package br.com.iswe.gwt.util.client;

import java.util.ArrayList;
import java.util.List;

/**
 * Bean que possui as informacoes de uma propriedade mantida pela FormFactory.
 */
public class PropertyInfo {
	private List componentes = new ArrayList();
	private List validatorList = new ArrayList();
	private List validatorHandlers = null;
	
	private String nome;
	private Object valor;
	private int    tipo;
	private boolean ignore = false;
	private boolean onLoading = false;
	private boolean propriedadeString = false;
	
	public PropertyInfo(List validatorHandlers){
		this.validatorHandlers = validatorHandlers;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public void setOnLoading(boolean onLoading) {
		this.onLoading = onLoading;
	}
	public boolean isOnLoading(){
		return onLoading;
	}
	
	public int getTipo() {
		return tipo;
	}
	public void setTipo(int tipo) {
		this.tipo = tipo;
	}
	
	public void addValidator(Validator validator){
		//Configura no Validator os Handlers disponiveis no form
		for (int i = 0; i < validatorHandlers.size(); i++) {
			validator.addValidationHandler((ValidationHandler)validatorHandlers.get(i));
		}
		validatorList.add(validator);
	}
	
	public List getValidatorList() {
		return validatorList;
	}
	
	public Object getValor() {
		return valor;
	}
	public void setValor(Object valor) {
		this.valor = valor;
	}

	public void setIgnore(boolean ignore) {
		this.ignore = ignore;
	}
	public boolean isIgnore() {
		return ignore;
	}
	
	public List getComponentes() {
		return componentes;
	}
	public void addComponente(Object componente) {
		this.componentes.add(componente);
	}

	public void setPropriedadeString(boolean propriedadeString){
		this.propriedadeString = propriedadeString;
	}
	public boolean isString() {
		return propriedadeString;
	}
	
	public String toString() {
		String valorString = "null";
		if(valor != null){
			valorString = valor.toString();
		}
		return nome + ":" + valorString;
	}

	protected String listPropertyName = null;
	public String getListPropertyName() {
		return listPropertyName;
	}
	public void setListPropertyName(String listPropertyName){
		this.listPropertyName = listPropertyName;
	}
}
